/**
 * common
 */

layui.define(function (exports) {
    const MOD_NAME = "common";
    let setter = layui.setter
        , $ = layui.$
        , admin = layui.admin

    //公共业务的逻辑处理可以写在此处，切换任何页面都会执行
    //……


    let common = {
        /**
         * 退出登录
         */
        logout: function(){
            //执行退出接口
            admin.req({
                url: setter.request.domainName + '/admin/Index/logout'
                ,type: 'post'
                ,data: {}
                ,done: function(res){ //这里要说明一下：done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
                    //清空本地记录的 token，并跳转到登入页
                    admin.exit();
                }
            });
        },
        /**
         * 权限验证
         * @param path
         * @returns {boolean}
         */
        checkAuth: function (path = ''){
            let arr = layui.router().path;
            let noAuth = [];
            if (!path){
                return false;
            }
            let url = arr[0] + '/' + arr[1] + '/' + path;
            if(path.indexOf("/") > -1){
                url = path;
            }
            let authList = layui.data(setter.tableName)[setter.authList];
            if(authList[0] === '*'){
                let result = noAuth.filter((item, index, self) => {
                    if(item){
                        // 把字母转换为大写进行比较
                        if(url.toLocaleUpperCase().indexOf(item.toLocaleUpperCase()) > -1 ){
                            return true;
                        }
                    }
                })
                return result.length <= 0;
            }
            let res = authList.filter((item, index, self) => {
                if(item){
                    // 把字母转换为大写进行比较
                    if(item.toLocaleUpperCase() === url.toLocaleUpperCase()){
                        return true;
                    }
                }
            })
            return res.length > 0;
        },
        /**
         * 初始化富文本下拉选择框
         * @param nodeId // 节点ID(整个项目唯一)
         * @param toolbarId // 工具栏ID
         * @param width // 宽度
         * @param height // 高度
         */
        initEditor: function (nodeId = '', toolbarId = '', width = '', height = 300) {
            const { createEditor, createToolbar } = window.wangEditor
            if(!nodeId || !toolbarId){
                return false;
            }
            let _node = $("#" + nodeId);
            let toolbarNode = $("#" + toolbarId);
            let token = layui.data(setter.tableName)[setter.request.tokenName];
            let _nodeLen = _node.length;
            let toolbarNodeLen = toolbarNode.length;
            if (_nodeLen <= 0 || _nodeLen > 1 || toolbarNodeLen <= 0 || toolbarNodeLen > 1) {
                return false;
            }

            const editorConfig = {
                placeholder: '请输入内容',
                autoFocus: false,
                MENU_CONF: {
                    uploadImage: {
                        fieldName: 'file',
                        base64LimitSize: 0, // 0M 以下插入 base64
                        server: setter.request.domainName + '/admin/Ajax/editorUpload?server=true&authorizationToken=' + token,
                    },
                    uploadVideo: {

                    }
                },
                // onChange(editor) {
                //     const html = editor.getHtml()
                //     console.log('editor content', html)
                //     // 也可以同步到 <textarea>
                // }
            }
            const editor = createEditor({
                selector: '#' + nodeId,
                html: '<p><br></p>',
                config: editorConfig,
                mode: 'default', // or 'simple'
            })
            const toolbarConfig = {}
            const toolbar = createToolbar({
                editor,
                selector: '#' + toolbarId,
                config: toolbarConfig,
                mode: 'default', // or 'simple'
            })
            return editor;
        },
        /**
         * 远程附件文件转换
         * @param file
         * @returns {string}
         */
        cdnUrlFilter: function (file = ''){
            if(!file){
                return file;
            }
            let cdnUrl = layui.data(setter.tableName)[setter.cdnUrl];
            if (!cdnUrl){
                cdnUrl = '';
            }
            if(file.indexOf("http:") > -1 || file.indexOf("https:") > -1 || file.indexOf("../static/") > -1 || file.indexOf("../storage/") > -1){
                return file;
            }else if(file.indexOf("/static/") > -1 || file.indexOf("/storage/") > -1){
                return '..' + file;
            }
            return cdnUrl + file;
        }
    }

    //注入layui组件中，供全局调用
    layui.common = common;

    //注入window全局对象中，供全局调用
    window.common = common;
    //对外暴露的接口
    exports(MOD_NAME, common);
});
